#ifndef _WMI_ICONNECTIONMANAGER_H
#define _WMI_ICONNECTIONMANAGER_H

/******************************************************************************
** @file	wmi_iconnection.h
** @author	Nestor Felipe
** @author	Armando Orellana
** @date	Jul 22, 2010
**
** @desc	The WMI_IConnectionManager interface have methods for all WMI_IConnectionManager's,
**			for create a new connections
*			
**
******************************************************************************/

#include <string>
#include "wmi_iconnection.h"
#include "wmi_connection.h"
#include "wmi_hresult.h"

class WMI_IConnectionManager 
{
 public:
	 /**
	 * Use this method for create a new connection to local pc
	 *
	 * @param user is the local user, for default empty string
	 * @param password is the user password, for de local connection for default is empty string
	 * @param conNameSpace is the name space where create the connection(root\cimv2, root\default)
	 * @param conRes is the out WMI_Connection object, where the user want save configuration
	 */
	 virtual WMI_HResult* createConnection(std::wstring user, 
					  std::wstring password, 
					  std::wstring conNameSpace, 
					  WMI_Connection& conRes) = 0;
	 
	 /**
	 * Use this method for create a new connection to remote pc
	 *
	 * @param user is the local user, for default empty string
	 * @param password is the user password, for de local connection for default is empty string
	 * @param pc_name is the IP or host name for the remote pc
	 * @param conNameSpace is the name space where create the connection(root\cimv2, root\default)
	 * @param conRes is the out WMI_Connection object, where the user want save configuration
	 */
	 virtual WMI_HResult* createConnection(std::wstring user, 
				      std::wstring password, 
					  std::wstring pc_name, 
					  std::wstring conNameSpace, 
					  WMI_Connection& conRes) = 0;
};

#endif // ConnectionMng_h
